package java6703.lesson02;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBase;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.*;
import javafx.scene.paint.Paint;
import javafx.stage.Stage;

import java.util.Arrays;
import java.util.Scanner;

public class StringSort6703 extends Application {



    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        Scene scene = new Scene(getRoot(), 600, 400);
        primaryStage.setScene(scene);
        primaryStage.setTitle("字符串中的数字排序");
        primaryStage.show();

    }
    /**
     * 我有一个字符串：“322 315 65 201 75 101”
     * 实现代码最终输出结果是：“65 75 101 201 315 322”
     *
     * 分析：
     *      A：定义一个字符串
     *      B：把字符串进行分割，得到一个字符串数组
     *      C：把字符串数组变换成int数组
     *      D：对int数组进行排序
     *      E：把排序后的int数组再组装成一个字符串
     *      F：输出数组字符串
     */
    private Parent getRoot() {
        Label lblStudent = new Label("212106703 陈杰");
        //边框【注意】多行代码的书写规范
        BorderStroke bs = new BorderStroke(Paint.valueOf("#8FBC8F")//边框的颜色
                , BorderStrokeStyle.DOTTED//边框的样式
                , new CornerRadii(10)//边框四个角的圆角
                , new BorderWidths(3));//边框的宽度
        lblStudent.setBorder(new Border(bs));//设置边框
        lblStudent.setPadding(new Insets(10));//设置边距

        //水平排列的两个控件，用于输入
        HBox hText = new HBox(10);
        Label lblText = new Label("输入数字串：");


        TextField tfText = new TextField();
        tfText.setPromptText("用空格分隔的数字串");//文本无内容时显示的提示信息
        hText.getChildren().addAll(lblText, tfText);
        hText.setAlignment(Pos.CENTER_LEFT);//两个控件的对齐方式

        Button button = new Button("排序");

        Label lblPrint = new Label();//显示排序结果

        //垂直排列的根节点
        VBox root = new VBox(20);//节点之间的垂直间距20
        //为根节点添加子节点
        root.getChildren().addAll(lblStudent, hText, button, lblPrint);
        root.setPadding(new Insets(20.0));//设置根节点的边距
        root.setAlignment(Pos.TOP_CENTER);//根节点中各节点的对齐方式
        root.setStyle("-fx-font-size:20");//用CSS样式设置容器中所有节点的字体大小

        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                //得到输入的数组
                String s = tfText.getText();

                //把字符串进行分割，得到一个字符串数组
                String[] strArray = s.split(" ");

                //把字符串数组变换成int数组
                int[] arr = new int[strArray.length];

                for (int i = 0; i < arr.length; i++) {
                    arr[i] = Integer.parseInt(strArray[i]);
                }

                //对int数组排序
                Arrays.sort(arr);

                //拼接排序后的数组成一个字符串
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < arr.length; i++) {
                    sb.append(arr[i]).append(" ");
                }

                //转换为字符串
                String result = sb.toString().trim();


                //输出字符串
                lblPrint.setText("排序结果:"+result);
            }
        });

        return root;

    }
}
